<?php
//Ultima verificación: 07-11-2014 ; 05-03-2015
class M_asignacion_docente extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las asignaturas dictadas por un profesor
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT docentexasignatura.*, persona.idPersona AS idPersona, persona.nombre AS nombrePersona, persona.apellido AS apellidoPersona, docente.trato AS trato,
											 asignatura.nombre AS nombreAsignatura, asignatura.abreviatura AS abreviaturaAsignatura, asignatura.colorDeFondo, asignatura.colorDeTexto, 
											 division.nombre AS division, curso.nombre AS curso, division.idDivision AS idDivision,
											 (SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											 (SELECT cargodocente.nombre FROM cargodocente WHERE cargodocente.idCargoDocente=docentexasignatura.idCargoDocente AND cargodocente.estado<>-1 LIMIT 1) as cargoDocente, 
											 DATE_FORMAT(docentexasignatura.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(docentexasignatura.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, docente, docentexasignatura, asignatura, division, curso, ciclolectivo, turno
									  WHERE persona.idPersona=docente.idPersona AND 
											docente.idDocente=docentexasignatura.idDocente AND 
											docentexasignatura.idAsignatura=asignatura.idAsignatura AND
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											turno.estado=1 AND 
											curso.estado=1 AND 
											division.estado=1 AND 
											asignatura.estado=1 AND 
											docentexasignatura.estado>-1 AND 
											persona.estado=1 AND 
											docente.estado=1 $restriccion
									  ORDER BY asignatura.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener las asignaturas dictadas activas (1)
	function buscarActivos($restriccion=null, $orderBy=null, $groupBy=null){
		if($orderBy=null) $orderBy="ORDER BY asignatura.nombre ASC";
		
		$consulta = $this->db->query("SELECT docentexasignatura.*, persona.idPersona AS idPersona, persona.nombre AS nombrePersona, persona.apellido AS apellidoPersona, docente.trato AS trato,
											asignatura.nombre AS nombreAsignatura, asignatura.abreviatura AS abreviaturaAsignatura, asignatura.colorDeFondo, asignatura.colorDeTexto, 
											division.nombre AS division, curso.nombre AS curso, division.idDivision AS idDivision, curso.idCurso AS idCurso, turno.idTurno AS idTurno, ciclolectivo.idCicloLectivo AS idCicloLectivo,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											(SELECT cargodocente.nombre FROM cargodocente WHERE cargodocente.idCargoDocente=docentexasignatura.idCargoDocente AND cargodocente.estado<>-1 LIMIT 1) as cargoDocente, 
											DATE_FORMAT(docentexasignatura.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(docentexasignatura.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, docente, docentexasignatura, asignatura, division, curso, ciclolectivo, turno
									  WHERE persona.idPersona=docente.idPersona AND 
											docente.idDocente=docentexasignatura.idDocente AND 
											docentexasignatura.idAsignatura=asignatura.idAsignatura AND
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											turno.estado=1 AND 
											curso.estado=1 AND 
											division.estado=1 AND 
											asignatura.estado=1 AND 
											docentexasignatura.estado=1 AND 
											persona.estado=1 AND 
											docente.estado=1 $restriccion
									  $orderBy
									  $groupBy");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una asignacion docente
	function eliminar($idDxA=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `docentexasignatura`
									 SET `estado` = ".-rand(1,100000000).",
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `docentexasignatura`.`idDxA` = " . $this->db->escape($idDxA) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una asignacion docente
	function crear($idDocente=null, $idAsignatura=null, $idCargoDocente=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `docentexasignatura` (`idDxA`,`idDocente`,`idAsignatura`,`idCargoDocente`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
														   (NULL,".$this->db->escape($idDocente).",".$this->db->escape($idAsignatura).",".$this->db->escape($idCargoDocente).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una asignacion docente en particular usada generalmente en el formulario de modificar
	function get($idDxA=null){
		$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
									  FROM docentexasignatura, asignatura, division, curso
									  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											docentexasignatura.estado>-1 AND 
											docentexasignatura.idDxA=".$this->db->escape($idDxA)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos verificar si un docente ya fue asignado a una asignatura en particular
	function get2($idDocente=null, $idAsignatura=null){
		$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
									  FROM docentexasignatura, asignatura, division, curso
									  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
											asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											docentexasignatura.estado>-1 AND 
											docentexasignatura.idDocente=".$this->db->escape($idDocente)." AND
											docentexasignatura.idAsignatura=".$this->db->escape($idAsignatura)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la asignacion contigua a una en particular usada generalmente en el formulario de modificar
	function getContiguo($idDxA=null, $cant=null, $idCicloLectivo=null, $idCurso=null, $idDivision=null, $idAsignatura=null, $idDocente=null){
		//11111
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision != 0 && $idAsignatura != 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision || $consulta->row()->idAsignatura != $idAsignatura || $consulta->row()->idDocente != $idDocente);
		}
		
		//11110
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision != 0 && $idAsignatura != 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision || $consulta->row()->idAsignatura != $idAsignatura);
		}
		
		//11101
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision != 0 && $idAsignatura == 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision || $consulta->row()->idDocente != $idDocente);
		}
		
		//11100
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision != 0 && $idAsignatura == 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision);
		}
		
		//11011
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision == 0 && $idAsignatura != 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idAsignatura != $idAsignatura || $consulta->row()->idDocente != $idDocente);
		}
		
		//11010
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision == 0 && $idAsignatura != 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idAsignatura != $idAsignatura);
		}
		
		//11001
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision == 0 && $idAsignatura == 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDocente != $idDocente);
		}
		
		//11000
		if($idCicloLectivo != 0 && $idCurso != 0 && $idDivision == 0 && $idAsignatura == 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso);
		}
		
		//10111
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision != 0 && $idAsignatura != 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idDivision != $idDivision || $consulta->row()->idAsignatura != $idAsignatura || $consulta->row()->idDocente != $idDocente);
		}
		
		//10110
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision != 0 && $idAsignatura != 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idDivision != $idDivision || $consulta->row()->idAsignatura != $idAsignatura);
		}
		
		//10101
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision != 0 && $idAsignatura == 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idDivision != $idDivision || $consulta->row()->idDocente != $idDocente);
		}
		
		//10100
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision != 0 && $idAsignatura == 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idDivision != $idDivision);
		}
		
		//10011
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision == 0 && $idAsignatura != 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision || $consulta->row()->idAsignatura != $idAsignatura || $consulta->row()->idDocente != $idDocente);
		}
		
		//10010
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision == 0 && $idAsignatura != 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idAsignatura != $idAsignatura);
		}
		
		//10001
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision == 0 && $idAsignatura == 0 && $idDocente != 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idDocente != $idDocente);
		}
		
		//10000
		if($idCicloLectivo != 0 && $idCurso == 0 && $idDivision == 0 && $idAsignatura == 0 && $idDocente == 0){
			do{
				$idDxA+=$cant;
				$consulta = $this->db->query("SELECT docentexasignatura.*, division.idDivision, curso.idCurso, curso.idCicloLectivo, curso.idTurno
										  FROM docentexasignatura, asignatura, division, curso
										  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND 
												asignatura.idDivision=division.idDivision AND 
												division.idCurso=curso.idCurso AND 
												docentexasignatura.idDxA=".$this->db->escape($idDxA)."
										  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado<='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo);
		}
		
		return($consulta->row()->idDxA);
	}
	
	//Este metodo se utiliza para modificar una asignacion docente
	function modificar($idDxA=null, $idDocente=null, $idAsignatura=null, $idCargoDocente=null, $estado=null){
		$consulta = $this->db->query("UPDATE `docentexasignatura`
									 SET `idDocente` = ". $this->db->escape($idDocente) .",
										 `idAsignatura` = ". $this->db->escape($idAsignatura) .",
										 `idCargoDocente` = ". $this->db->escape($idCargoDocente) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `docentexasignatura`.`idDxA` = " . $this->db->escape($idDxA) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para modificar una asignacion docente
	function modificar2($idDxA=null, $idCargoDocente=null, $estado=null){
		$consulta = $this->db->query("UPDATE `docentexasignatura`
									 SET `idCargoDocente` = ". $this->db->escape($idCargoDocente) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `docentexasignatura`.`idDxA` = " . $this->db->escape($idDxA) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>